/*
** Mortem's HGE Addon 1.2
** Copyright (C) 2006-2007, Osokin 'elmortem' Makar
** http://elmortem.mirgames.ru
**
** Input based on HGE Input Events
*/

#include <mhainput.h>

HGE *mhaInput::hge = 0;

mhaInput::mhaInput(void) {
	hge = hgeCreate(HGE_VERSION);
}

mhaInput::~mhaInput(void) {
	hge->Release();
}
	
void mhaInput::Update(void) {
	if(!hge->Input_GetEvent(&Event)) {
		Event.type = -1;
		hge->Input_GetMousePos(&Event.x, &Event.y);
	}
	for(int i = 0; i < 256; i++) {
		bDown[i] = hge->Input_GetKeyState(i);
	}
}

bool mhaInput::IsClick(int key) {
	return (Event.type == INPUT_KEYDOWN || Event.type == INPUT_MBUTTONDOWN) && Event.key == key;
}

bool mhaInput::IsDown(int key) {
	if(key < 0 || key > 255) return false;
	return bDown[key];
}

bool mhaInput::IsRectOver(float x, float y, float width, float height) {
	return Event.x > x && Event.y > y && Event.x < x + width && Event.y < y + height;
}

void mhaInput::Reset(void) {
	memset(&Event, 0, sizeof(hgeInputEvent));
	for(int i = 0; i < 256; i++) {
		bDown[i] = false;
	}
}
